gtk3-demo: Use better text margins
authorMatthias Clasen <mclasen@redhat.com>
Wed, 12 Nov 2014 21:05:49 +0000 (16:05 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 12 Nov 2014 21:05:49 +0000 (16:05 -0500)
We really want margins around the scrollable content, not around
the viewport. Make it so by using textview-specific properties.
This is unfortunately a little complicated for top/bottom.

demos/gtk-demo/main.c
demos/gtk-demo/main.ui

index 601812640cfeaea9e212b279426de94b4ccaa4dc..c555136e7b044d186384b602003c26b3de9cac1c 100644 (file)
@@ -772,19 +772,53 @@ load_file (const gchar *demoname,
         case 3:
           /* Reading program body */
           gtk_text_buffer_insert (source_buffer, &start, p, -1);
-          gtk_text_buffer_insert (source_buffer, &start, "\n", 1);
+          if (lines[i+1] != NULL)
+            gtk_text_buffer_insert (source_buffer, &start, "\n", 1);
           break;
         }
     }
 
+  g_strfreev (lines);
+
   fontify (source_buffer);
 
-  g_strfreev (lines);
+  gtk_text_buffer_create_tag (source_buffer, "top-margin",
+                              "pixels-above-lines", 20,
+                              NULL);
+  gtk_text_buffer_get_start_iter (source_buffer, &start);
+  end = start;
+  gtk_text_iter_forward_word_end (&end);
+  gtk_text_buffer_apply_tag_by_name (source_buffer, "top-margin", &start, &end);
+
+  gtk_text_buffer_create_tag (source_buffer, "bottom-margin",
+                              "pixels-below-lines", 20,
+                              NULL);
+  gtk_text_buffer_get_end_iter (source_buffer, &end);
+  start = end;
+  gtk_text_iter_backward_word_start (&start);
+  gtk_text_buffer_apply_tag_by_name (source_buffer, "bottom-margin", &start, &end);
 
-  gtk_text_view_set_buffer (GTK_TEXT_VIEW (info_view), info_buffer);
-  g_object_unref (info_buffer);
   gtk_text_view_set_buffer (GTK_TEXT_VIEW (source_view), source_buffer);
   g_object_unref (source_buffer);
+
+  gtk_text_buffer_create_tag (info_buffer, "top-margin",
+                              "pixels-above-lines", 20,
+                              NULL);
+  gtk_text_buffer_get_start_iter (info_buffer, &start);
+  end = start;
+  gtk_text_iter_forward_word_end (&end);
+  gtk_text_buffer_apply_tag_by_name (info_buffer, "top-margin", &start, &end);
+
+  gtk_text_buffer_create_tag (info_buffer, "bottom-margin",
+                              "pixels-below-lines", 20,
+                              NULL);
+  gtk_text_buffer_get_end_iter (info_buffer, &end);
+  start = end;
+  gtk_text_iter_backward_word_start (&start);
+  gtk_text_buffer_apply_tag_by_name (info_buffer, "bottom-margin", &start, &end);
+
+  gtk_text_view_set_buffer (GTK_TEXT_VIEW (info_view), info_buffer);
+  g_object_unref (info_buffer);
 }
 
 static void
@@ -830,7 +864,10 @@ create_text (GtkWidget **view,
                                        GTK_SHADOW_NONE);
 
   *view = text_view = gtk_text_view_new ();
-  g_object_set (text_view, "margin", 20, NULL);
+  g_object_set (text_view,
+                "left-margin", 20,
+                "right-margin", 20,
+                NULL);
 
   gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE);
   gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (text_view), FALSE);
index 900dc4492665a41aaa05633b669f20834c77cc34..f24989fc309068dcf8a8d4b3975e0dbbd3e00ab9 100644 (file)
                   <object class="GtkTextView" id="info-textview">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="margin_start">20</property>
-                    <property name="margin_end">20</property>
-                    <property name="margin_top">20</property>
-                    <property name="margin_bottom">20</property>
+                    <property name="left-margin">20</property>
+                    <property name="right-margin">20</property>
                     <property name="pixels_above_lines">2</property>
                     <property name="pixels_below_lines">2</property>
                     <property name="editable">False</property>
                   <object class="GtkTextView" id="source-textview">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="margin_start">20</property>
-                    <property name="margin_end">20</property>
-                    <property name="margin_top">20</property>
-                    <property name="margin_bottom">20</property>
+                    <property name="left-margin">20</property>
+                    <property name="right-margin">20</property>
                     <property name="editable">False</property>
                     <property name="cursor_visible">False</property>
                   </object>